package cn.jlearn.proxy.server.handler.bs;

import cn.jlearn.proxy.common.body.TcpTunnelBody;
import cn.jlearn.proxy.common.enums.ProtocolEnum;
import cn.jlearn.proxy.common.handler.AbstractBsHandler;
import cn.jlearn.proxy.common.packet.BsPacket;
import cn.jlearn.proxy.server.container.ForwardServer;
import cn.jlearn.proxy.server.container.TcpForwardServer;
import org.tio.core.ChannelContext;
import org.tio.core.Tio;

/**
 * @author qianyingchao
 * @version 1.0
 * @date 2021/5/12 4:45 下午
 */
public class TcpTunnelCloseReqHandler extends AbstractBsHandler<TcpTunnelBody> {

    @Override
    public Class<TcpTunnelBody> bodyClass() {
        return TcpTunnelBody.class;
    }

    @Override
    public void handler(BsPacket packet, TcpTunnelBody bsBody, ChannelContext channelContext) throws Exception {
        ChannelContext ctx;
        if (ProtocolEnum.HTTP.getCode().equals(bsBody.getProtocol())) {
            ctx = Tio.getByBsId(ForwardServer.serverTioConfig, bsBody.getBsId());
        } else {
            ctx = Tio.getByBsId(TcpForwardServer.serverTioConfig, bsBody.getBsId());
        }
        Tio.close(ctx, "被动断开");
    }

}
